package com.nnnu.orange.controller.admin;


import com.nnnu.orange.constant.MessageConstants;
import com.nnnu.orange.pojo.dto.PaymentQueryDto;
import com.nnnu.orange.result.Result;
import com.nnnu.orange.service.IPaymentsService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * <p>
 * 支付记录表，记录用户支付的罚款信息 前端控制器
 * </p>
 *
 * @author zk
 * @since 2024-12-08
 */
@RestController("adminPaymentsController")
@RequestMapping("/admin/payments")
@RequiredArgsConstructor
@Api(tags = "管理端订单相关接口")
@Slf4j
public class PaymentsController {

    private final IPaymentsService paymentsService;

    /**
     * 分页查询所有订单列表
     *
     * @param queryDto dto
     * @return 分页后的数据
     */
    @GetMapping("/list")
    @ApiOperation("分页查询所有订单列表")
    public Result<?> list(PaymentQueryDto queryDto) {
        log.info("管理员分页查询所有订单列表：{}", queryDto);
        return Result.success(paymentsService.pageList(queryDto), MessageConstants.SELECT_OK);
    }

    /**
     * 获取订单详细信息
     *
     * @param id 订单ID
     * @return 订单实体
     */
    @GetMapping("/detail/{id}")
    @ApiOperation("获取订单详细信息")
    public Result<?> detail(@PathVariable Integer id) {
        log.info("管理员获取订单详细:{}", id);
        return Result.success(paymentsService.detail(id), MessageConstants.SELECT_OK);
    }


    /**
     * 批量删除订单信息
     *
     * @param ids id列表
     * @return 提示
     */
    @DeleteMapping("/delete")
    @ApiOperation("批量删除订单信息")
    public Result<?> batchDelete(@RequestParam List<Integer> ids) {
        log.info("管理员批量删除订单信息:{}", ids);
        paymentsService.batchDelete(ids);
        return Result.success(MessageConstants.OPERATION_SUCCESSFUL);
    }

}
